package closure01
/**
 * 求出1-n之间,符合闭包策略的数之和,
 *    传递一个返回布尔值的函数
 */
def totalSum(n,closure){
    total=0
    for (i in 1..n) {
        if(closure(i)) total+=i
    }
    total
}
//预先定义闭包,可复用
strategy01={ it%2==0}  //默认使用it表示闭包参数
strategy02={ x-> x%2!=0} //可用->自定义
sum00=totalSum(10) { it%2==0} //直接使用闭包,可省略括号
//可直接实现策略模式
sum01=totalSum(10,strategy01)
sum02=totalSum(10,strategy02)
println sum01 //求出偶数和
println sum02  //求出奇数和